#pragma once
#include <functional>
#include <memory>
#include <string>
#include <system_error>

namespace uds_model {

class Client {
public:
    explicit Client(const std::string& sock_path);
    ~Client();

    // 连接/重新连接服务端
    void connect();
    
    // 主动断开连接
    void disconnect();

    // 检查连接状态
    bool is_connected() const;

    // 发送一行数据
    void send_line(const std::string& line);

    // 读取一行数据（阻塞）
    std::string read_line();

    // 底层文件描述符（未连接时为-1）
    int native() const;

private:
    class Impl;
    std::unique_ptr<Impl> pImpl;
};
} // namespace uds_model
